Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.01.2015, 00:09
Аспирант
Отправить личное сообщение для WarDoctor Посмотреть профиль Найти все сообщения от WarDoctor
 
Регистрация: 02.01.2015
Сообщений: 32

Как правильно отобразить json-данные autocomlete и вывести результаты работы
На страничке в наличии поля для заполнения :
textarea id="AC10" - поле "поиска"
span id="AC10-id" и span id="AC10-description" - поля вывода выбранного
<table align="center" border="0">
<tr class="button2" style="color: #0000ff; text-transform: none;"><th><b>Автодополнение слов</b>
<br><textarea id="AC10" rows="3" cols="50"></textarea><div style="text-align: left;"><span id="AC10-id"></span><br><span id="AC10-desc"></span></div>
</th></tr>
</table>

При использовании стандартного autocomplete, пока данные были единичными строками все было норм, но как только данные были расширены до считывания из БД и приобрели формат json-строки застопорилось т.к. разобрать json-строку и вывести только необходимое в поле "поиска" не знаю как. (Для локального считывания minLength пока равен 0, в реальных условиях значение будет увеличено...)
$(function() {
    function AC10() {
        $( "#AC10" ).autocomplete({
            source: function(request, response) {
                $.ajax({
                    url: "json_ac.php",
                    dataType: "json",
                    data: { term: request.term },
                    success: function (data) {
                        response( data );
                        alert( "Прибыло \ndata:\n" + data + "\n(Это всё... )" );
                    }
                });
            },
            focus: function( event, ui ) {
                $( "#AC10" ).val( ui.item.name );
                return false;
            },
            select: function( event, ui ) {
                $( "#AC10" ).val( ui.item.name );
                $( "#AC10-id" ).text( "Id = " + ui.item.id + "." );
                $( "#AC10-desc" ).html( "Description: <b>" + ui.item.desc + "</b>" );
                return false;
            },
            minLength: 0
        });
    }
    $( "#AC10" ).change(AC10);
    AC10();
});

Данные для формирования в json_ac.php берутся из БД MySQL корректно. Запрос и отклик проходит нормально. При попытке получить запрос вываливается весь доступный список, а необходимо чтобы формировался список доступных вариантов из поля name, а не пустые строки и после выбора данные id, name и desc записывались в свои поля (AC10-id, AC10 и AC10-desc соответственно):
Код:
["{\"id\":\"58\", \"name\":\"02-rasputin.mp3\", \"desc\":\"Boney M\"}","{\"id\":\"22\", \"name\":\"06-rivers_of_babylon.mp3\", \"desc\":\"Boney M\"}","{\"id\":\"43\", \"name\":\"10-heart_of_gold.mp3\", \"desc\":\"Boney M\"}","{\"id\":\"98\", \"name\":\"01-mamma_mia.mp3\", \"desc\":\"ABBA\"}","{\"id\":\"365\", \"name\":\"06-bang-a-boomerang.mp3\", \"desc\":\"ABBA\"}","{\"id\":\"256\", \"name\":\"11-so_long.mp3\", \"desc\":\"ABBA\"}","{\"id\":\"159\", \"name\":\"04-happy_nation.mp3\", \"desc\":\"Ace of base\"}","{\"id\":\"753\", \"name\":\"08-dancer_in_a_daydream.mp3\", \"desc\":\"Ace of base\"}","{\"id\":\"65\", \"name\":\"12-young_and_proud.mp3\", \"desc\":\"Ace of base\"}","{\"id\":\"85\", \"name\":\"17-space_mix.mp3\", \"desc\":\"Modern Talking\"}","{\"id\":\"12\", \"name\":\"01-youre_my_heart.mp3\", \"desc\":\"Modern Talking\"}","{\"id\":\"47\", \"name\":\"07-atlantis_is_calling.mp3\", \"desc\":\"Modern Talking\"}"]

Последний раз редактировалось WarDoctor, 04.01.2015 в 00:56.
Ответить с цитированием
  #2 (permalink)  
Старый 04.01.2015, 01:03
Аспирант
Отправить личное сообщение для WarDoctor Посмотреть профиль Найти все сообщения от WarDoctor
 
Регистрация: 02.01.2015
Сообщений: 32

Активность профессионалов ОЧУМЕТЬ можно! Даже ответить не поспешили...
Решение нашел самостоятельно.

Решение предназначено только для "чайников", каким и сам являюсь:
1. В блоке
success: function (data) {
                        response( data );
                        alert( "Прибыло \ndata:\n" + data + "\n(Это всё... )" );
                    }
удаляем alert-строку.
2. В строку 25 скрипта вставляем отображение данных
2.1. Уточняем версию JQuery-скрипта каким пользуемся:
2.1.1. Для версии до 1.10 используем data("autocomplete")
minLength: 1
		}).data("autocomplete")._renderItem = function( ul, item ) {
				return $( "<li></li>" )
					.data( "item.autocomplete", item )
					.append( "<a>" + item.name + "</a>" )
					.appendTo( ul );
		};

2.1.2. Для версий после 1.10 используем data("ui-autocomplete")
minLength: 1
		}).data("ui-autocomplete")._renderItem = function( ul, item ) {
				return $( "<li></li>" )
					.data( "item.autocomplete", item )
					.append( "<a>" + item.name + "</a>" )
					.appendTo( ul );
		};


И последнее при настройке считывания из БД (типа MySQL) надо использовать поиск через
$_GET
или
$_POST
который используется для запроса в БД. Если на страничке присутствует несколько полей с autocomplete, то для каждого поля необходимо предусмотреть свою переменную в скрипте за это отвечает строка
data: { term: request.term },
Например для полей с номерами 0-3 переменные для каждого JS-скрипта отдельно нужно обозвать
term0: request.term
term1: request.term
term2: request.term
term3: request.term
, в запросах к БД сделать по типу
$_GET['term0'], $_GET['term1'], $_GET['term2'], $_GET['term3']
(или $_POST) соответственно. При формировании запроса из скрипта каждый запрос должен быть в отдельном файле, иначе каша в которой разобраться весьма сложно...

Последний раз редактировалось WarDoctor, 05.01.2015 в 12:45.
Ответить с цитированием
  #3 (permalink)  
Старый 04.01.2015, 01:15
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

WarDoctor,
Цитата:
Активность профессионалов ОЧУМЕТЬ можно! Даже ответить не поспешили...
Чтобы быстрее ответили, в следующий раз пиши не в час ночи, а в четыре. В этот время мы тут как раз все собираемся и отвечаем на вопросы.
Ответить с цитированием
  #4 (permalink)  
Старый 04.01.2015, 11:28
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от WarDoctor
Вчера, 00:09
Как правильно отобразить json-данные autocomlete и вывести результаты работы
Сообщение от WarDoctor
Сегодня, 01:03
Активность профессионалов ОЧУМЕТЬ можно! Даже ответить не поспешили...
о, умаялся за день, не заметил, как уснул, мой господин
ох-еть народ пошёл
Ответить с цитированием
  #5 (permalink)  
Старый 05.01.2015, 03:31
Аспирант
Отправить личное сообщение для WarDoctor Посмотреть профиль Найти все сообщения от WarDoctor
 
Регистрация: 02.01.2015
Сообщений: 32

Сообщение от Safort Посмотреть сообщение
WarDoctor,
Чтобы быстрее ответили, в следующий раз пиши не в час ночи, а в четыре. В этот время мы тут как раз все собираемся и отвечаем на вопросы.
О великий господин, Safort, приношу извинения за Ваше беспокойство и за то что соизволили снизойти и отметить своим вниманием суточной давности вопрос такого смерда каковым являюсь.
В будущем наберусь терпения и размещу запрос за 3 года до необходимости его исполнения, дабы не перетруждать Вас...
Ответить с цитированием
  #6 (permalink)  
Старый 05.01.2015, 03:35
Аспирант
Отправить личное сообщение для WarDoctor Посмотреть профиль Найти все сообщения от WarDoctor
 
Регистрация: 02.01.2015
Сообщений: 32

Сообщение от bes Посмотреть сообщение
о, умаялся за день, не заметил, как уснул, мой господин
ох-еть народ пошёл
Да ладно все мы человеки. Понимаю, что иногда бывает не до разбора запросов других... Над проблемой бился неделю... Но главное, что решение найдено и теперь другим будет проще при решении подобных задач

Спасибо за понимание и уважение к другим
Ответить с цитированием
  #7 (permalink)  
Старый 05.01.2015, 03:36
Аспирант
Отправить личное сообщение для WarDoctor Посмотреть профиль Найти все сообщения от WarDoctor
 
Регистрация: 02.01.2015
Сообщений: 32

Администраторы, модераторы!
Тема исчерпана и может быть закрыта.
Спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно отправлять данные Mukhtar AJAX и COMET 9 05.03.2013 09:56
Как правильно вывести результат парсинга? sitebuilder Общие вопросы Javascript 0 07.03.2012 18:30
Правильно вывести результаты allasan Общие вопросы Javascript 3 11.02.2012 17:50
Как правильно получить введенные данные в поле? buket jQuery 11 11.04.2010 19:59
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20